home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1996 June / EnigmA AMIGA RUN 08 (1996)(G.R. Edizioni)(IT)[!][issue 1996-06][EARSAN CD VII].iso / earcd / amos / scllysrc.lha / Scally.amos / Scally.amosSourceCode < prev    next >
AMOS Source Code  |  1992-09-02  |  23KB  |  986 lines

  1. '
  2. '
  3. '
  4. '*                              DEMO SOURCE CODE   
  5. '*                                SCALLY 1996      
  6. '* 
  7. '*  Mods removed (all 700k's worth!) 
  8. '*  Original TURBO commands have been replaced with normal Amos, 
  9. '*  So the plane shifted effects cannot be seen ( routines are still there though! )   
  10. '*  I make no apologies for the use of Goto or the layout of my code!!!  
  11. '*  Feel free to steal and modify these routines, just give me a name drop if you do :-)   
  12. '  
  13. '
  14. '
  15. '
  16. '
  17. Set Buffer 100 : Rem I don't think this is needed but I've got tons of ram so what the hell!
  18. Procedure _SCREEN
  19.    Screen Open 0,320,256,2,0 : Palette $0,$0 : Cls 0
  20.    Degree 
  21.    Update Off 
  22.    Synchro Off 
  23.    Sprite Update Off 
  24.    Bob Update Off 
  25.    Auto View Off 
  26. End Proc
  27. _SCREEN
  28. Cls 0 : Screen Copy Logic To Physic
  29. B=28 : Rem points   
  30. Dim DX#(B)
  31. Dim DY#(B)
  32. Dim OX#(B)
  33. Dim OY#(B)
  34. Dim OZ#(B)
  35. Dim DZ#(B)
  36. Dim ZZ#(B)
  37. Global OX#(),OY#(),OZ#(),DX#(),DY#(),DZ#(),B,DZ#(),ZZ#()
  38. DX#(1)=0
  39. DY#(1)=0
  40. For N=1 To B
  41.    OX#(N)=Sin(N*425)*65
  42.    OY#(N)=Cos(N*125)*45
  43.    ZZ#(N)=(Rnd(9)+1)/100
  44. Next N
  45. FLAG=1
  46. OFLAG=0
  47. Z#=1
  48. O#=5
  49. Auto View On : View 
  50. _ZOOMTRO
  51. Timer=0
  52. Do 
  53.    If Timer>400 Then Fade 4 : Wait 9 : Goto MERSEYSIDE
  54.    Gosub STAR : Bob NUM,DX#(NUM),DY#(NUM),83-DZ#(NUM)/4
  55.    If NUM=B Then Add H,1,1 To 50 : Bob B,30,210,H : Bob Update 
  56. Loop 
  57. STAR:
  58. Add NUM,1,1 To B : DZ#(NUM)=DZ#(NUM)+0.3
  59. DX#(NUM)=(OX#(NUM)*DZ#(NUM))+160 : DY#(NUM)=(OY#(NUM)*DZ#(NUM))+128
  60. If DX#(NUM)>320 or DX#(NUM)<1 Then DZ#(NUM)=0 : Repeat : OX#(NUM)=Rnd(32)+(-16) : Until OX#(NUM)<>0
  61. If DY#(NUM)>255 or DY#(NUM)<1 Then DZ#(NUM)=0 : Repeat : OY#(NUM)=Rnd(32)+(-16) : Until OY#(NUM)<>0
  62. Return 
  63.  
  64.  
  65.  
  66.  
  67. ' *************************************************************
  68. MERSEYSIDE:
  69. Bob Off : Bob Update 
  70. Screen Open 0,320,256,8,0 : Curs Off : Hide On : Double Buffer : Autoback 0 : Flash Off : Cls 0
  71. Screen 0
  72. For N=1 To 7
  73.    Colour N,256+N
  74. Next N
  75. Screen Swap 
  76. Hide On 
  77. Curs Off 
  78. Cls 0
  79. Degree 
  80. '
  81. Update Off 
  82. Synchro Off 
  83. Sprite Update Off 
  84. Bob Update Off 
  85. Clip 1,1 To 316,255
  86. B=14
  87. Dim SYN#(360),COZ#(360)
  88. Dim C(16)
  89. For N=1 To B
  90.    Add F,1,1 To 2
  91.    OX#(N)=Sin(N*30)*4
  92.    OY#(N)=Cos(N*30)*6
  93. Next N
  94. For N=1 To B Step 2
  95.    OX#(N)=OX#(N)/2
  96.    OY#(N)=OY#(N)/2
  97. Next N
  98. View 
  99. For N=1 To 360
  100.    SYN#(N)=Sin(N*2)
  101.    COZ#(N)=Cos(N*2)
  102. Next N
  103. Cls 0
  104. Auto View On 
  105. Do 
  106.    If FLAG=1 Then Gosub Z Else Gosub Z2
  107.    If A=360 Then Gosub SHAPE
  108.    Add A,1,1 To 360 : If FLAG=1 Then Add N,4,1 To 360 Else N=N-4 : If N<2 Then N=360
  109.    Gosub CLAC : For KK=1 To B-2 : Ink C(KK) : Polygon DX#(KK),DY#(KK) To DX#(KK+1),DY#(KK+1) To DX#(KK+2),DY#(KK+2) To DX#(KK),DY#(KK) : Next KK : Screen Copy Logic,0,0,320,246 To Logic,SYN#(A)*45,COZ#(A)*45 : Wait Vbl : Screen Swap 
  110. Loop 
  111. CLAC:
  112. For NUM=1 To B
  113.    DX#(NUM)=160+(OX#(NUM)*SYN#(N)+OY#(NUM)*COZ#(N))*Z#
  114.    DY#(NUM)=128+(OX#(NUM)*COZ#(N)-OY#(NUM)*SYN#(N))*Z#
  115.    If DY#(NUM)>110 Then Dec C(NUM) Else Inc C(NUM)
  116.    If C(NUM)<1 Then C(NUM)=1
  117.    If C(NUM)>7 Then C(NUM)=7
  118. Next NUM
  119. Return 
  120.  
  121. Z:
  122. Z#=Z#+0.6 : If Z#>16 Then FLAG=0
  123. Return 
  124. Z2:
  125. Z#=Z#-0.2 : If Z#<1 Then FLAG=1
  126. Return 
  127.  
  128. SHAPE:
  129. Inc S
  130. If S=1 Then H=72 : XD=6 : YD=5
  131. If S=2 Then H=12 : XD=6 : YD=6
  132. If S=3 Then H=30 : XD=4 : YD=7 : Else Goto LANCASHIRE
  133. For N=1 To B
  134.    Add F,1,1 To 2
  135.    OX#(N)=Sin(N*H)*XD
  136.    OY#(N)=Cos(N*H)*YD
  137. Next N
  138.  
  139. For N=1 To B Step 2
  140.    OX#(N)=OX#(N)/2
  141.    OY#(N)=OY#(N)/2
  142. Next N
  143. Return 
  144.  
  145. LANCASHIRE:
  146. S=0
  147. For N=1 To B
  148.    OX#(N)=Sin(N*30)*5
  149.    OY#(N)=Cos(N*30)*5
  150.    OZ#(N)=4
  151. Next N
  152. For N=1 To B Step 2
  153.    OX#(N)=OX#(N)/2
  154.    OY#(N)=OY#(N)/2
  155.    OZ#(N)=OZ#(N)/8
  156. Next N
  157. Timer=0
  158. Do 
  159.    If Timer>500 Then Goto LEICESTER
  160.    If FLAG=1 Then Gosub Z Else Gosub Z2
  161.    If FLAG=1 Then Add N,4,1 To 360 Else N=N-4 : If N<2 Then N=360
  162.    Gosub LANCCLAC : For KK=1 To B-2 : Ink C(KK) : Polygon DX#(KK),DY#(KK) To DX#(KK+1),DY#(KK+1) To DX#(KK+2),DY#(KK+2) To DX#(KK),DY#(KK) : Next KK : Screen Swap : Wait Vbl : Cls 0
  163. Loop 
  164.  
  165. GREEN:
  166. For N=1 To 7
  167.    Colour N,N*16
  168. Next N
  169. Return 
  170. BLUE:
  171. For N=1 To 7
  172.    Colour N,N
  173. Next N
  174. Return 
  175.  
  176. LANCCLAC:
  177. For NUM=1 To B
  178.    DX#(NUM)=160+(OX#(NUM)+OZ#(NUM)*SYN#(N)+(OY#(NUM)+OZ#(NUM)*COZ#(N)))*Z#
  179.    DY#(NUM)=128+(OX#(NUM)+OZ#(NUM)*COZ#(N)-(OY#(NUM)+OZ#(NUM)*SYN#(N)))*Z#
  180.    If DX#(NUM)>160 Then Dec C(NUM) Else Inc C(NUM)
  181.    If C(NUM)<1 Then C(NUM)=1
  182.    If C(NUM)>7 Then C(NUM)=7
  183. Next NUM
  184. Return 
  185.  
  186.  
  187.  
  188. LEICESTER:
  189. S=0
  190. For N=1 To 7
  191.    Colour N,N
  192. Next N
  193. Do 
  194.    If FLAG=1 Then Gosub Z Else Gosub Z2
  195.    Add A,1,1 To 360 : If A=180 Then Gosub LSHAPE
  196.    If FLAG=1 Then Add N,6,1 To 360 Else N=N-6 : If N<3 Then N=360
  197.    Gosub LCLAC : For KK=1 To B-2 : Ink C(KK) : Polygon DX#(KK),DY#(KK) To DX#(KK+1),DY#(KK+1) To DX#(KK+2),DY#(KK+2) To DX#(KK),DY#(KK) : Next KK : Screen Swap : Wait Vbl : Cls 0
  198. Loop 
  199.  
  200. LCLAC:
  201. For NUM=1 To B
  202.    DX#(NUM)=160+(OX#(NUM)*SYN#(N)+OY#(NUM)*COZ#(N))*Z#
  203.    DY#(NUM)=128+(OX#(NUM)*COZ#(N)-OY#(NUM)*SYN#(N))*Z#
  204.    If DY#(NUM)>120 Then Dec C(NUM) Else Inc C(NUM)
  205.    If C(NUM)<1 Then C(NUM)=1
  206.    If C(NUM)>7 Then C(NUM)=7
  207. Next NUM
  208. Return 
  209.  
  210. LSHAPE:
  211. Inc S
  212. If S<>0 Then H=72 : XD=5 : YD=9 : Gosub GREEN
  213. If S=2 Then H=72 : XD=8 : YD=4 : Gosub BLUE : Else Gosub RIPPLE
  214. For N=1 To B
  215.    Add F,1,1 To 2
  216.    OX#(N)=Sin(N*H)*XD
  217.    OY#(N)=Cos(N*H)*YD
  218. Next N
  219.  
  220. For N=1 To B Step 2
  221.    OX#(N)=OX#(N)/4
  222.    OY#(N)=OY#(N)/4
  223. Next N
  224. Return 
  225.  
  226.  
  227.  
  228.  
  229.  
  230.  
  231. RIPPLE:
  232. Unpack 8 To 0
  233. Auto View On : View 
  234. WIBBLE
  235. Procedure WIBBLE
  236.    Curs Off 
  237.    Flash Off 
  238.    Autoback 0
  239.    FLAG=1
  240.    Z#=4
  241.    D#=1
  242.    Wait 30
  243.    Do 
  244.       For U=1 To 12
  245.          For T=1 To 320 Step 1
  246.             D#=D#-0.0001
  247.             Add N,1,1 To 360 : Add F,5,1 To 256 : If FLAG=1 Then Gosub Z Else Gosub Z2
  248.             Screen Copy Logic,,F,340,F+11 To Physic,Sin(N*56)*2,F+Cos(N*14)*D#
  249.          Next T
  250.       Next U
  251.       Unpack 8 To 0
  252.       Double Buffer : Autoback 0
  253.       For U=1 To 22
  254.          For T=320 To 0 Step -1
  255.             D#=D#+0.0001
  256.             Add N,1,1 To 360 : Add F,5,1 To 256 : If FLAG=1 Then Gosub Z Else Gosub Z2
  257.             Screen Copy Logic,,F,340,F+11 To Physic,Sin(N*14)*Z#,F+Cos(N*7)*Z#*Z#
  258.          Next T
  259.       Next U
  260.       D#=1
  261.       Fade 4 : Wait 30 : Pop Proc
  262.    Loop 
  263.    '
  264.  
  265.    Z:
  266.    FLAG=1
  267.    Z#=Z#+0.01 : If Z#>7 Then FLAG=0
  268.    Return 
  269.  
  270.    Z2:
  271.    FLAG=0
  272.    Z#=Z#-0.01 : If Z#<-3 Then FLAG=1
  273.    Return 
  274. End Proc
  275. BLUR
  276. Procedure BLUR
  277.    Screen Open 0,320,256,4,0
  278.    Hide On 
  279.    Curs Off 
  280.    Flash Off 
  281.    Cls 0
  282.    Double Buffer 
  283.    Autoback 0
  284.    Degree : Auto View Off 
  285.    Palette $0,$4,$9,$F
  286.    Update Off 
  287.    Synchro Off 
  288.    Sprite Update Off 
  289.    Bob Update Off 
  290.  
  291.    B=25
  292.    '
  293.    X=2
  294.    Y=2
  295.  
  296.    For N=1 To B
  297.       Add F,1,1 To 2
  298.       OX#(N)=Sin(N*X)*2
  299.       OY#(N)=Cos(N*Y)*2
  300.       OZ#(N)=N
  301.       If F=2 Then OZ#(N)=-N
  302.    Next N
  303.    For N=1 To B Step 2
  304.       OX#(N)=OX#(N)/2
  305.       OY#(N)=OY#(N)/2
  306.       OZ#(N)=OZ#(N)/2
  307.    Next N
  308.    FLAG=1
  309.    OFLAG=0
  310.    G=2
  311.    Cls 0
  312.    Z#=32
  313.    O#=5
  314.    Bob Off 
  315.    View 
  316.    Timer=0
  317.    SANE=6
  318.    SILLY=5
  319.    Do 
  320.       If Timer>320 Then Timer=0 : SANE=Rnd(7)+1 : SILLY=Rnd(7)+1 : Gosub CHANGER : Cls 0 : Screen Copy Logic To Physic : Add C,1,1 To 3 : If C=1 Then Gosub B Else Gosub R : If C=2 Then Gosub G
  321.       Add N,1,1 To 360 : If FLAG=1 Then Gosub Z Else Gosub Z2
  322.       Gosub CLAC : For KK=1 To B : Paste Bob DX#(KK),DY#(KK),53 : Next KK : Screen Copy Logic,,,320,256 To Logic,15, : Wait Vbl : Screen Swap 
  323.    Loop 
  324.    '
  325.    CLAC:
  326.    C#=Cos(N*SANE) : S#=Sin(N*SILLY)
  327.    For NUM=1 To B
  328.       DX#(NUM)=(OX#(NUM)*Z#*S#+(OY#(NUM)*C#))+80 : DY#(NUM)=(OY#(NUM)*Z#*C#)-(OY#(NUM)*C#)+128
  329.    Next NUM
  330.    Return 
  331.  
  332.    Z:
  333.    Z#=Z#+0.1 : If Z#>76 Then FLAG=0
  334.    Return 
  335.  
  336.    '
  337.    Z2:
  338.    Z#=Z#-0.1 : If Z#<1 Then FLAG=1
  339.    Return 
  340.  
  341.  
  342.    B:
  343.    Palette $0,$F01,$F08,$F0F
  344.    Return 
  345.  
  346.    R:
  347.    Palette $0,$F73,$273,$7F3
  348.    Return 
  349.  
  350.    G:
  351.    Palette $0,$40,$90,$F0
  352.    Return 
  353.  
  354.  
  355.  
  356.    CHANGER:
  357.    Add H,1,1 To 6 : If H=5 Then Fade 4 : Wait 15 : Pop Proc
  358.    For N=1 To B
  359.       Add F,1,1 To 2
  360.       OX#(N)=Sin(N*SANE)*2
  361.       OY#(N)=Cos(N*SILLY)*2
  362.       OZ#(N)=N
  363.       If F=2 Then OZ#(N)=-N
  364.    Next N
  365.    For N=1 To B Step 2
  366.       OX#(N)=OX#(N)/2
  367.       OY#(N)=OY#(N)/2
  368.       OZ#(N)=OZ#(N)/2
  369.    Next N
  370.    Return 
  371. End Proc
  372. BLURZ
  373. Procedure BLURZ
  374.    Screen Open 0,640,256,8,Hires : Screen Display 0,,,Screen Width,Screen Height
  375.    Hide On 
  376.    Curs Off 
  377.    Flash Off 
  378.    Cls 0
  379.    Double Buffer : Autoback 0
  380.    Degree 
  381.    Palette $0,$F,$52F,$229,$F0,$F1F,$29F,$1DD,$F00
  382.    '
  383.    Clip 1,1 To 640,255
  384.    Dim DX(4)
  385.    Dim DY(4)
  386.    Dim OX(4)
  387.    Dim OY(4)
  388.    Dim CZ#(360)
  389.    Dim SN#(360)
  390.    '
  391.    O=25
  392.    DX(1)=0
  393.    DY(1)=0
  394.    '
  395.    OX(1)=0
  396.    OY(1)=0
  397.    OX(2)=50
  398.    OY(2)=0
  399.    OX(3)=50
  400.    OY(3)=50
  401.    OX(4)=0
  402.    OY(4)=50
  403.    FLAG=1
  404.    G=2
  405.    Ink 7
  406.    For N=1 To 360
  407.       SN#(N)=Sin(N)
  408.       CZ#(N)=Cos(N*2)
  409.    Next N
  410.    '
  411.    '
  412.    Z#=0.001
  413.    Timer=0
  414.    W#=1
  415.    Do 
  416.       If Timer>500 Then Pop Proc
  417.       If FLAG=1 Then Gosub Z Else Gosub Z2
  418.       Add N,1,1 To 360 : Gosub CLAC
  419.       Polyline DX(1),DY(1) To DX(2),DY(2) To DX(3),DY(3) To DX(4),DY(4) To DX(1),DY(1)
  420.       Polyline DX(1)+O,DY(1)+O To DX(1),DY(1) To DX(2)+O,DY(2)+O To DX(2),DY(2)
  421.       Polyline DX(3)+O,DY(3)+O To DX(3),DY(3) To DX(4)+O,DY(4)+O To DX(4),DY(4)
  422.       Polyline DX(1)+O,DY(1)+O To DX(2)+O,DY(2)+O To DX(3)+O,DY(3)+O To DX(4)+O,DY(4)+O To DX(1)+O,DY(1)+O
  423.        Wait Vbl : Screen Swap 
  424.    Loop 
  425.    '
  426.    '
  427.    '
  428.    CLAC:
  429.    For NUM=1 To 4
  430.       DX(NUM)=(((OX(NUM)-25)*CZ#(N))+((OY(NUM)-25)*SN#(N)))*Z#+320
  431.       DY(NUM)=(((OX(NUM)-25)*SN#(N))-((OY(NUM)-25)*CZ#(N)))*Z#*W#+127
  432.    Next NUM
  433.    Return 
  434.    '
  435.    '
  436.    '
  437.    Z:
  438.    Z#=Z#+0.1 : If Z#>6 Then FLAG=0 : Cls 0 : Screen Copy Logic To Physic
  439.    Return 
  440.    '
  441.    '
  442.    '
  443.    Z2:
  444.    Z#=Z#-0.1 : If Z#<0.1 Then FLAG=1
  445.    Return 
  446. End Proc
  447. TRIP
  448. Procedure TRIP
  449.    Auto View On : View 
  450.    Screen Open 0,320,261,2,0 : Curs Off : Flash Off 
  451.    Double Buffer : Autoback 0
  452.    Hide On : Curs Off : Degree : Bob Update Off : Synchro Off : 
  453.    Palette $0,$FFF
  454.    '
  455.    For N=1 To 28
  456.       OX#(N)=Sin(N*125)*72
  457.       OY#(N)=Cos(N*425)*92
  458.    Next N
  459.    Dim SYN#(360)
  460.    Dim COZ#(360)
  461.    For N=1 To 360
  462.       SYN#(N)=Sin(N*4)
  463.       COZ#(N)=Cos(N*6)
  464.    Next N
  465.    N=1
  466.    Timer=0
  467.    Do 
  468.       If Timer>500 Then Fade 4 : Wait 10 : Pop Proc
  469.       Gosub CLAC : Add N,1,1 To 360
  470.       For KK=1 To 28
  471.          Paste Bob DX#(KK),DY#(KK),85
  472.          Paste Bob DY#(KK)+30,DX#(KK)-30,85
  473.       Next KK : Screen Copy Logic,,,160,256 To Logic,161, : Screen Copy Logic,0,0,320,128 To Logic,,129,%11100000 : Screen Copy Logic To Physic : Cls 0
  474.    Loop 
  475.  
  476.    CLAC:
  477.    For NUM=1 To 28
  478.       DX#(NUM)=(OX#(NUM)*COZ#(N))+(OY#(NUM)*SYN#(N))+70
  479.       DY#(NUM)=(OX#(NUM)*SYN#(N))-(OY#(NUM)*COZ#(N))+65
  480.    Next NUM
  481.    Return 
  482. End Proc
  483. CURVESPACE
  484. Procedure CURVESPACE
  485.    Screen Open 0,320,256,16,0
  486.    Auto View On 
  487.    Hide On 
  488.    Curs Off 
  489.    Flash Off 
  490.    Cls 0
  491.    Autoback 0
  492.    Degree 
  493.    Clip 1,1 To 319,255
  494.    Palette $0,$1,$2,$3,$4,$5,$6,$7,$8,$9,$A,$B,$C,$D,$E,$F,$F
  495.  
  496.    O#=15
  497.    DX#(1)=0
  498.    DY#(1)=0
  499.    '
  500.    OX#(1)=0
  501.    OY#(1)=0
  502.    OX#(2)=30
  503.    OY#(2)=0
  504.    OX#(3)=30
  505.    OY#(3)=30
  506.    OX#(4)=0
  507.    OY#(4)=30
  508.    FLAG=1
  509.    G=2
  510.    Timer=0
  511.    Do 
  512.       If Timer>850 Then Fade 4 : Wait 20 : Pop Proc
  513.       Add N,1,1 To 360 : Add G,1,1 To 16
  514.       If FLAG=1 Then Gosub Z Else Gosub Z2
  515.       Gosub CLAC : Ink G : If G=16 Then Cls 0
  516.       Polyline DX#(1)-K#,DY#(1)-K# To DX#(2)-K#,DY#(2)-K# To DX#(3)-K#,DY#(3)-K# To DX#(4)-K#,DY#(4)-K# To DX#(1)-K#,DY#(1)-K#
  517.       Polygon DX#(1)+O#,DY#(1)+O# To DX#(1),DY#(1) To DX#(2)+O#,DY#(2)+O# To DX#(2),DY#(2)
  518.       Polygon DX#(3)+O#,DY#(3)+O# To DX#(3),DY#(3) To DX#(4)+O#,DY#(4)+O# To DX#(4),DY#(4)
  519.       Polyline DX#(1)+O#+K#,DY#(1)+O#+K# To DX#(2)+O#+K#,DY#(2)+O#+K# To DX#(3)+O#+K#,DY#(3)+O#+K# To DX#(4)+O#+K#,DY#(4)+O#+K# To DX#(1)+O#+K#,DY#(1)+O#+K#
  520.    Loop 
  521.    '
  522.    CLAC:
  523.    COZ#=Cos(N*2)
  524.    SYN#=Sin(N*2)
  525.    For NUM=1 To 4
  526.       DX#(NUM)=((OX#(NUM)-50)*COZ#-((OY#(NUM)-50)*SYN#))
  527.       DY#(NUM)=((OX#(NUM)-50)*SYN#+((OY#(NUM)-50)*COZ#))
  528.       DX#(NUM)=DX#(NUM)*(Sin(K#)*4)
  529.       DX#(NUM)=DX#(NUM)-Sin(DY#(NUM))*(Sin(K#)*177)+130
  530.       DY#(NUM)=DY#(NUM)+Cos(DX#(NUM))*(Cos(K#)*120)+128
  531.    Next NUM
  532.    Return 
  533.    '
  534.    '
  535.    Z:
  536.    FLAG=1
  537.    K#=K#+0.2 : If K#>76 Then FLAG=0
  538.    Return 
  539.    '
  540.    '
  541.    Z2:
  542.    FLAG=0
  543.    K#=K#-0.2 : If K#<0 Then FLAG=1
  544.    Return 
  545. End Proc
  546. SNAKE
  547. Procedure SNAKE
  548.    Screen Open 0,320,246,8,0 : Screen Display 0,,,Screen Width,Screen Height-6
  549.    Hide On 
  550.    Curs Off 
  551.    Flash Off 
  552.    Cls 0
  553.    Double Buffer 
  554.    Autoback 0
  555.    Degree : Auto View Off 
  556.    For N=1 To 7
  557.       Colour N,N+N
  558.    Next N
  559.    '
  560.    Update Off 
  561.    Synchro Off 
  562.    Sprite Update Off 
  563.    Bob Update Off 
  564.    Clip 12,12 To 300,231
  565.    B=14
  566.    Dim SYN#(360),COZ#(360)
  567.    Dim C(16)
  568.  
  569.    For N=1 To B
  570.       Add F,1,1 To 2
  571.       OX#(N)=Sin(N*N)*5
  572.       OY#(N)=Cos(N*N)*5
  573.    Next N
  574.    Rem n
  575.    For N=1 To B Step 2
  576.       '   Add F,1,1 To 2 
  577.       OX#(N)=OX#(N)/1.2
  578.       OY#(N)=OY#(N)/1.2
  579.       '      If F=2 Then OX#(N)=OX#(N)/4 
  580.    Next N
  581.  
  582.    View 
  583.  
  584.    For N=1 To 360
  585.       SYN#(N)=Sin(N*2)
  586.       COZ#(N)=Cos(N*2)
  587.    Next N
  588.    Cls 0
  589.    Z#=0.1
  590.    Timer=0
  591.    Do 
  592.       If Timer>800 Then Pop Proc
  593.       If FLAG=1 Then Gosub Z Else Gosub Z2
  594.       Add N,1,1 To 360 : Gosub CLAC : For KK=1 To B-2 : Ink C(KK) : Polyline DX#(KK),DY#(KK) To DX#(KK+1),DY#(KK+1) To DX#(KK+2),DY#(KK+2) To DX#(KK),DY#(KK) : Next KK : Screen Swap 
  595.       Screen Copy Logic,,,320,256 To Logic,15,
  596.    Loop 
  597.    '
  598.    CLAC:
  599.    For NUM=1 To B
  600.       DX#(NUM)=140+(SYN#(N)*45)+(OX#(NUM)*SYN#(N)+(OY#(NUM))*COZ#(N))*Z# : DY#(NUM)=128+(OX#(NUM)*COZ#(N)-OY#(NUM)*SYN#(N))*Z#
  601.       If DY#(NUM)>120 Then Dec C(NUM) Else Inc C(NUM)
  602.       If C(NUM)<1 Then C(NUM)=1
  603.       If C(NUM)>7 Then C(NUM)=7
  604.    Next NUM
  605.    Return 
  606.  
  607.  
  608.  
  609.    Z:
  610.    Z#=Z#+0.6 : If Z#>18 Then FLAG=0
  611.    Return 
  612.  
  613.    Z2:
  614.    Z#=Z#-0.2 : If Z#<1 Then FLAG=1
  615.    Return 
  616. End Proc
  617. TRADITIONAL
  618. Procedure TRADITIONAL
  619. Screen Open 0,640,256,2,Hires : Screen 0
  620. Hide On 
  621. Curs Off 
  622. Flash Off 
  623. Cls 0
  624. Double Buffer : Autoback 0
  625. Degree 
  626. Palette $0,$F0
  627. '
  628. Dim DX(4)
  629. Dim DY(4)
  630. Dim OX(4)
  631. Dim OY(4)
  632. Dim COZ#(360)
  633. Dim SYN#(360)
  634. '
  635. O=25
  636. DX(1)=0
  637. DY(1)=0
  638. '
  639. OX(1)=0
  640. OY(1)=0
  641. OX(2)=50
  642. OY(2)=30
  643. OX(3)=50
  644. OY(3)=50
  645. OX(4)=30
  646. OY(4)=50
  647. FLAG=1
  648. G=2
  649. Ink 7
  650. Clip 1,1 To 640,255
  651. For N=1 To 360
  652.    SYN#(N)=Sin(N*3)
  653.    COZ#(N)=Cos(N*3)
  654. Next N
  655. '
  656. '
  657. Z#=0.001
  658. Auto View On : View 
  659. Timer=0
  660. Do 
  661.    If Timer>700 Then Pop Proc
  662.    If FLAG=1 Then Gosub Z Else Gosub Z2
  663.    Add N,1,1 To 360 : Gosub CLAC
  664.    Polyline DX(1),DY(1) To DX(2),DY(2) To DX(3),DY(3) To DX(4),DY(4) To DX(1),DY(1)
  665.    Polygon DX(1)+O,DY(1)+O To DX(1),DY(1) To DX(2)+O,DY(2)+O To DX(2),DY(2)
  666.    Polygon DX(3)+O,DY(3)+O To DX(3),DY(3) To DX(4)+O,DY(4)+O To DX(4),DY(4)
  667.    Polyline DX(1)+O,DY(1)+O To DX(2)+O,DY(2)+O To DX(3)+O,DY(3)+O To DX(4)+O,DY(4)+O To DX(1)+O,DY(1)+O : Screen Swap : Wait Vbl : Cls 0
  668. Loop 
  669. '
  670. CLAC:
  671. For NUM=1 To 4
  672.    DX(NUM)=(((OX(NUM)-25)*Z#*COZ#(N))+((OY(NUM)-25)*Z#*SYN#(N)))*Z#+320+(SYN#(N)*126)
  673.    DY(NUM)=(((OX(NUM)-25)*Z#*SYN#(N))-((OY(NUM)-25)*Z#*COZ#(N)))*Z#+127
  674. Next NUM
  675. Return 
  676. '
  677. '
  678. '
  679. Z:
  680. Z#=Z#+0.01 : If Z#>1.8 Then FLAG=0
  681. Return 
  682. '
  683. '
  684. '
  685. Z2:
  686. Z#=Z#-0.0001 : If Z#<0.1 Then FLAG=1
  687. Return 
  688. End Proc
  689. CONIC
  690. Procedure CONIC
  691.    Screen Open 0,320,256,4,0
  692.    Hide On 
  693.    Curs Off 
  694.    Flash Off 
  695.    Cls 0
  696.    Double Buffer 
  697.    Autoback 0
  698.    Degree : Auto View Off 
  699.    Palette $0,$F0,$80,$40,$FFF,$777,$333,$F08,$608,$308,$F,$5,$2,$F02,$702,$302
  700.    For N=1 To 31
  701.      Colour N,N+16
  702.    Next N
  703.    Update Off 
  704.    Synchro Off 
  705.    Sprite Update Off 
  706.    Bob Update Off 
  707.    Clip 1,1 To 319,255
  708.    B=14
  709.    Dim C(B)
  710.    '
  711.    'O=5 
  712.    DX#(1)=0
  713.    DY#(1)=0
  714.    '
  715.  
  716.    For N=1 To B
  717.       Add F,1,1 To 2
  718.       OX#(N)=Sin(N*30)*75
  719.       OY#(N)=Cos(N*30)*75
  720.       OZ#(N)=74
  721.       If F=2 Then OZ#(N)=-40
  722.    Next N
  723.  
  724.    For N=1 To B Step 2
  725.       OX#(N)=OX#(N)/8
  726.       OY#(N)=OY#(N)/8
  727.       OZ#(N)=OZ#(N)/6
  728.    Next N
  729.    Z#=1
  730.    Bob Off 
  731.    View 
  732.    Timer=0
  733.    Do 
  734.       If Timer>600 Then Pop Proc
  735.       Add N,1,1 To 360 : X=X-1 : If X<1 Then X=360
  736.       Gosub CLAC : For KK=1 To B-2 : Ink C(KK) : Polygon DX#(KK),DY#(KK) To DX#(KK+1),DY#(KK+1) To DX#(KK+2),DY#(KK+2) To DX#(KK),DY#(KK) : Next KK : Screen Swap : Wait Vbl : Cls 0
  737.    Loop 
  738.    '
  739.    CLAC:
  740.    C#=Cos(N*4) : S#=Sin(N*4)
  741.    SS#=Sin(X*4) : CC#=Cos(X*4)
  742.    For NUM=1 To B
  743.       Add D,1,1 To 3
  744.       DX#(NUM)=(S#*35)+((OX#(NUM)*SS#+OZ#(NUM)*S#)+(OY#(NUM)*CC#+OZ#(NUM)*C#))+160 : DY#(NUM)=((OX#(NUM)*CC#+OZ#(NUM)*C#)-(OY#(NUM)*SS#+OZ#(NUM)*S#))+126
  745.       If D=3 Then If DY#(NUM)<110 Then Inc C(NUM) Else Dec C(NUM)
  746.       If C(NUM)<1 Then C(NUM)=1
  747.       If C(NUM)>2 Then C(NUM)=3
  748.    Next NUM
  749.    Return 
  750. End Proc
  751. SUPERSTAR
  752. Procedure SUPERSTAR
  753.    Screen Open 0,640,256,2,Hires : Curs Off : Flash Off : Cls 0
  754.    Double Buffer 
  755.    Autoback 0 : Sprite Update Off : Bob Update Off : Update Off 
  756.    Degree 
  757.    Palette $0,$F0
  758.  
  759.    DX#=1.6
  760.    DY#=1.6
  761.    B=14 : Rem number of points   How complex should it look? 
  762.  
  763.    Dim X#(B),Y#(B),SYN#(360),COZ#(360)
  764.  
  765.    For N=1 To 360
  766.       SYN#(N)=Sin(N)
  767.       COZ#(N)=Cos(N)
  768.    Next N
  769.  
  770.    For N=1 To B
  771.       OX#(N)=Sin(N*30)*6
  772.       OY#(N)=Cos(N*30)*9
  773.       OZ#(N)=4
  774.    Next N
  775.    For N=1 To B Step 2
  776.       OX#(N)=-OX#(N)/2
  777.       OY#(N)=-OY#(N)/2
  778.       OZ#(N)=-OZ#(N)/2
  779.    Next N
  780.  
  781.    O#=20
  782.    Z#=0.2
  783.    A=1
  784.    N=1
  785.    Auto View On : View 
  786.    '   Ink 3
  787.    Timer=0
  788.    Clip 1,1 To 640,256
  789.    Timer=0
  790.    Do 
  791.       If Timer>800 Then Pop Proc
  792.       If FLAG=1 Then Gosub Z Else Gosub Z2
  793.       Add N,1,1 To 360 : A=Sin(N)*360 : If A<1 or A>359 Then A=1
  794.       Gosub CLAC : Screen Swap : Wait Vbl : Cls 0
  795.    Loop 
  796.  
  797.    SHAPE:
  798.    For N=1 To B
  799.       Add F,1,1 To 2
  800.       OX#(N)=Sin(N*30)*3
  801.       OY#(N)=Cos(N*30)*9
  802.       OZ#(N)=3
  803.       If F=2 Then OY#(N)=OY#(N)/5 : OZ#(N)=OZ#(N)/5 : OZ#(N)=-OZ#(N)
  804.    Next N
  805.    Return 
  806.  
  807.    '************
  808.    '*          *
  809.    '*   Maths  *
  810.    '*          *
  811.    '************  
  812.  
  813.  
  814.    CLAC:
  815.    For T=1 To B
  816.       X#(T)=160.0+((OX#(T)*SYN#(A)+(OZ#(T)*COZ#(N)+DX#)*DX#)+(OY#(T)*COZ#(A)+(OZ#(T)*SYN#(N)+DY#)*DY#))*Z#
  817.       Y#(T)=129.0+((OX#(T)*COZ#(A)+(OZ#(T)*COZ#(N)+DX#)*DX#)-(OY#(T)*SYN#(A)+(OZ#(T)*COZ#(N)+DY#)*DY#))*Z#
  818.    Next T
  819.  
  820.    For T=1 To B-3
  821.       Polyline X#(T),Y#(T) To X#(T+1),Y#(T+1) To X#(T+2),Y#(T+2)
  822.    Next T
  823.    Return 
  824.  
  825.  
  826.  
  827.    Z:
  828.    Z#=Z#+0.4 : If Z#>39 Then FLAG=0
  829.    Return 
  830.  
  831.    Z2:
  832.    Z#=Z#-0.1 : If Z#<0.1 Then FLAG=1
  833.    Return 
  834. End Proc
  835. _ZOOMTRO
  836. Procedure _ZOOMTRO
  837.    Screen Open 0,320,256,8,0
  838.    ' Screen Display 0,210,,Screen Width,Screen Height 
  839.    Hide On 
  840.    Curs Off 
  841.    Flash Off 
  842.    Cls 0
  843.    Double Buffer 
  844.    Autoback 0
  845.    Degree : Auto View Off 
  846.    For N=1 To 7
  847.       Colour N,N
  848.    Next N
  849.    '
  850.    Update Off 
  851.    Synchro Off 
  852.    Sprite Update Off 
  853.    Bob Update Off 
  854.    Clip 1,1 To 319,255
  855.    B=28
  856.    Dim SYN#(360),COZ#(360)
  857.    Dim C(B)
  858.  
  859.    For N=1 To B
  860.       Add F,1,1 To 2
  861.       OX#(N)=Sin(N*18)*4
  862.       OY#(N)=Cos(N*18)*4
  863.    Next N
  864.  
  865.    For N=1 To B Step 4
  866.       OX#(N)=OX#(N)/2
  867.       OY#(N)=OY#(N)/2
  868.    Next N
  869.  
  870.    View 
  871.  
  872.    For N=1 To 360
  873.       SYN#(N)=Sin(N*5)
  874.       COZ#(N)=Cos(N*5)
  875.    Next N
  876.    Timer=0
  877.    N=1
  878.    Do 
  879.       Z#=Z#+0.24
  880.       If Z#>32.8 Then Gosub CLAC : For KK=1 To B-2 : Ink C(KK) : Polygon DX#(KK),DY#(KK) To DX#(KK+1),DY#(KK+1) To DX#(KK+2),DY#(KK+2) To DX#(KK),DY#(KK) : Next KK : Screen Copy Logic To Physic : Pop Proc
  881.       Add N,1,1 To 360 : Gosub CLAC : For KK=1 To B-2 : Ink C(KK) : Polygon DX#(KK),DY#(KK) To DX#(KK+1),DY#(KK+1) To DX#(KK+2),DY#(KK+2) To DX#(KK),DY#(KK) : Next KK : Screen Swap : Wait Vbl : Cls 0
  882.    Loop 
  883.    '
  884.    CLAC:
  885.    For NUM=1 To B
  886.       DX#(NUM)=160+(OX#(NUM)*Z#*SYN#(N)+(OY#(NUM)*Z#)*COZ#(N)) : DY#(NUM)=128+(OX#(NUM)*Z#*COZ#(N)-OY#(NUM)*Z#*SYN#(N))
  887.       If DY#(NUM)>120 Then Dec C(NUM) : Else Inc C(NUM)
  888.       If C(NUM)<1 Then C(NUM)=1
  889.       If C(NUM)>7 Then C(NUM)=7
  890.    Next NUM
  891.    Return 
  892. End Proc
  893. VORTEX
  894. Procedure VORTEX
  895.    Wait Vbl : Screen Open 2,640,56,16,Hires+Laced : Curs Off : Cls 0 : Flash Off : For T=1 To 15 : Colour T,T*16 : Next T
  896.    Double Buffer 
  897.    Screen Open 1,640,36,2,Hires : Cls 0 : Ink 31 : Paper 0 : Palette $0,$F : Screen Display 1,,270,Screen Width,Screen Height-20
  898.    Curs Off : Y=240
  899.    Palette $0,$F00
  900.    '
  901.    T$="   Code & Music By Scally 1996                      Scroller will smooth out in a moment            "
  902.    T$=T$+"   If you like my music and need a musician for your group etc.  then E-mail  CA3TN @ DMU.AC.UK                "
  903.    T$=T$+"  Check out my homepage     <-------->      http:// www.cms.dmu.ac.uk / ~ca3tn / mailbomb.html            which contains source code + other ego related stuff.             "
  904.    T$=T$+" All samples taken from my home setup. Instrument noises from a Kawai K1 and a Cheetah MS6; Not many people realise that this uses the same SSM chips found in later model Prophet synths...  Big Sound!   "
  905.    T$=T$+" Percussion comes from an Alesis D4...       "
  906.    T$=T$+"  Amos is the ultimate RAD tool and this demo was created to put some well deserved credit back into Amos, which "
  907.    T$=T$+" doesn't deserve the 'Lame' tag. ( Due to shit programmer's releasing shit software... )                      "
  908.    T$=T$+" Demo info...    TURBO and CRAFT extensions were utilised for smooth fx and tracker             Real-time zooming, rotating, shaded polygons, full screen, 8 colours...( intro used 32 colours!)        What's the catch ?      "
  909.    T$=T$+" No hidden line removal or clipping... It takes way too long to sort an array out;  At least if you require demo speed.                      look out for more stuff in 96 / 97...                                        "
  910.    _LENGTH=Len(T$)
  911.    Screen Open 0,320,512,32,0+Laced : Screen Display 0,,,Screen Width,Screen Height
  912.    Screen To Front 2
  913.    Screen To Front 1
  914.    For N=1 To 31
  915.       Colour N,N
  916.    Next N
  917.  
  918.    Shift Up 1,1,31,1
  919.    Hide On 
  920.    Curs Off 
  921.    Flash Off 
  922.    Cls 0
  923.    Degree : Auto View Off 
  924.    Update Off 
  925.    Synchro Off 
  926.    Sprite Update Off 
  927.    Bob Update Off 
  928.    B=14
  929.    For N=1 To B
  930.       Add F,1,1 To 2
  931.       OX#(N)=Sin(N*8)*12
  932.       OY#(N)=Cos(N*25)*12
  933.       OZ#(N)=12
  934.    Next N
  935.    View 
  936.  
  937.    Cls 0
  938.    Z#=0.3
  939.    O#=0
  940.    S#=0.2
  941.    WX#=0.7
  942.    WY#=0.2
  943.    WZ#=0.3
  944.    A=1
  945.    SMEG#=1
  946.    G=1
  947.    Do 
  948.       SS:
  949.       If FLAG=1 Then Gosub Z Else Gosub Z2
  950.       Add N,1,1 To 360 : Gosub CLAC : Add A,2,1 To 360 : Add W,1,1 To 50 : Screen 2 : Bob 1,190+Sin(A*3)*Z#,10,W : Bob Update 
  951.       Screen 1 : Gosub _SCROLL : Screen 0 : Screen Swap 
  952.       If R=1 Then Shift Down 1,1,31,1 : SMEG#=3 : Goto SS
  953.       Add G,1,1 To 31 : Ink G
  954.       For KK=1 To B : Plot DX#(KK),DY#(KK),G : Next KK
  955.    Loop 
  956.    '
  957.    CLAC:
  958.    SYN#=Sin(N) : COZ#=Cos(N*SMEG#)
  959.    For NUM=1 To B
  960.       TX#=OX#(NUM) : TY#=OY#(NUM)
  961.       DX#(NUM)=((((TX#)*Z#*COZ#)+((TY#)*Z#*SYN#))*WX#)*WZ#+160
  962.       DY#(NUM)=((((TX#)*Z#*SYN#)-((TY#)*Z#*COZ#))*WY#)*WZ#+286
  963.    Next NUM
  964.    Return 
  965.  
  966.  
  967.  
  968.    Z:
  969.    Z#=Z#+0.1 : If Z#>140 Then FLAG=0 : Screen Copy Logic To Physic : Z#=0.001 : R=1
  970.    Return 
  971.  
  972.    Z2:
  973.    Z#=Z#-0.2 : If Z#<2 Then FLAG=1
  974.    Return 
  975.    '
  976.    '
  977.    '
  978.    _SCROLL:
  979.    '
  980.    LAST_LETTER=1+_LENGTH
  981.    Add E,1,1 To 7
  982.    If E=7 Then LETTER$=Mid$(T$,LETTER,1) : Text 630,9+Sin(X*48)*1.2,LETTER$ : Add X,1,1 To 360 : Add LETTER,1,1 To LAST_LETTER
  983.    Screen Copy Logic,0,0,640,36 To Logic,-1, : Screen Copy Logic,,,640,46 To 0,Sin(N*4)*25,90 : Wait Vbl : Screen Swap 
  984.    Return 
  985.    '
  986. End Proc